]> dgit.raspbian.org Git - gnome-shell.git/commit
panel: Stop using Shell.GenericContainer
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Wed, 27 Jun 2018 19:02:15 +0000 (16:02 -0300)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Tue, 9 Oct 2018 01:42:23 +0000 (22:42 -0300)
commit286ffbe2b637327fff87acebbe3c7683a05a16c6
treef80887262d549221227d280ab83c7132399441f0
parenta3f5354abba4c88ff33ccdd495c4aa87add9a285
panel: Stop using Shell.GenericContainer

Shell.GenericContainer exposes the size negotiation machinery
through the use of signals. Signals are not specially performant.
One of the reasons is that they acquire a global lock for signal
handlers lookup. GNOME Shell has more than 2,000 actors at any
given point in time, up to 20 levels deep in hierarchy, making
size negotiation and painting non-trivial tasks. Such a critical
section of Clutter's machinery shouldn't rely on signals
whatsoever.

Regardless of that, Shell.GenericContainer is a workaround to
a non-existing issue anymore. It shouldn't be used anyway, and
any performance improvements that removing it can potentially
yield are bonuses to it.

This commit starts this work by removing Shell.GenericContainer
usage from Panel.Panel class. The class now extends St.Widget,
and as such, it has no "this.actor" field set anymore. A couple
of places where this actor field was used are adjuste as well.

It is important to notice that we now allocate the Panel itself
inside vfunc_allocate(). This was previously done before emitting
the signal by Shell.GenericContainer.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/153
js/ui/overview.js
js/ui/panel.js
js/ui/windowManager.js